#ifndef PERSONNAGE_H_
#define PERSONNAGE_H_

/* Enums */
typedef enum { tpHero, tpMonstre, tpBoss} TypePerso;

/* Typedefs */
typedef struct _Personnage Personnage;

/* Includes */
#include "Case.h"
#include "Pouvoir.h"
#include "Joueur.h"

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Erreur.h"

/* Destructor */
void deletePersonnage(Personnage* perso);

/* Getters */
int persoGetExperience(Personnage* perso);
int persoGetVie(Personnage* perso);
TypePerso persoGetType(Personnage* perso);
Pouvoir* persoGetPouvoir(Personnage* perso);
Case* persoGetCase(Personnage* perso);
Joueur* persoGetJoueur(Personnage* joueur);
const char* persoGetTypeNom(Personnage* perso);
int persoIsFreezed(Personnage* perso);
int persoUnFreeze(Personnage* perso);
void persoUnFreezeForce(Personnage* perso);

/* Settlers */
void persoSetExperience(Personnage* perso,int experience);
void persoSetVie(Personnage* perso,int vie);
void persoAddVie(Personnage* perso,int nbVie);
void persoRecevoirAttaque(Personnage* perso,int force);
void persoSetPouvoir(Personnage* perso,Pouvoir* pouvoir);
void persoSetCase(Personnage* perso,Case* c);
void persoSetJoueur(Personnage* perso,Joueur* joueur);
void persoFreeze(Personnage* perso);
void persoFreezeFor(Personnage* perso,int nbTours);

/* Méthodes */
int persoAttaquer(Personnage* perso,Personnage* ennemi);
int persoIsMort(Personnage* perso);
int persoRessuciter(Personnage* perso);
#endif /*PERSONNAGE_H_*/
